<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<h1>데이터베이스 커넥션 풀</h1>
 
<h3>개요</h3>
<p>자바 프로그램 실행시 비용이 많이 소모되는 부분은 객체 생성/소멸, 입출력 처리 작업임</p>
<p>JDBC 프로그램에서는 DB 관련 작업시 연결객체를 생성하고, 소멸하는 작업이 빈번하게 일어나는데,<br />
   이 때 접속자가 많으면 실행시간이 많이 지연됨</p>
<p>따라서 연결객체를 만들고, 사용한 후 바로 객체를 소멸시키지 않고 이 객체들을 저장하는 저장소 pool에 일시적으로 보관했다가,<br />
   다른 접속자가 사용해야 할 경우 다시 생성하지 않고 기존에 생성해돈 객체를 재사용</p>
<p>일정시간동안 더 이상 사용하는 사람이 없으면 그때서야 객체를 소멸시킴</p>
 
<h3>설치 방식</h3>
<p>1. 아파치 프로젝트의 DBCP 라이브러리 이용<br />성능은 좋지만, 설치가 번거로움</p>
<p>2. JSP/서블릿 컨테이너에 내장된 DBCP를 이용<br />다양한 설치방법 제공, 성능은 무난(추천)</p>
<h3>설치 순서</h3>
<p>1. META-INF/server.xml의 context 태그 속 resource 태그에 작성하거나</p>
<p>2. 프로젝트마다 server.xml의  context 태그 속 resource 태그에 작성(다소 불편)</p>
<p>cafe24같은 웹 호스팅 업체를 이용하는 경우 이 방식을 이용해서 커넥션 풀을 사용해야 함</p>
<p>2번 방식은 tomcat.apache.org 의How-TO참조
 http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html들어가서 8~9번 보기!!</p>
 
<h3>JNDI 표기법</h3>
<p>java naming and directory interface</p>
<pre>
(conf/server.xml의 context 태그에 작성)
 <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="zipcode" password="zipcode" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/zipcode"/>
               

</pre>
<pre>
(WEB_INF/web.xml에 작성)
<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/zipcode</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
 </resource-ref>
</pre>
<hr />
<sql:query var="rs" dataSource="jdbc/zipcode">
	select * from zipcode
	order by seq desc
	limit 0,100
</sql:query>
<c:forEach var="z" items="${rs.rows }">
	<span>${z.zipcode }</span>
</c:forEach>















</body>
</html>